package com.plian.system.entity.im;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.plian.Tools.DateUtil;
import com.plian.system.mybatis.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @description:投资计划执行主表
 * @author: gangan
 * @create: 2020-04-27 14:32
 */
@Data
@TableName("im_base_investment_execution_new")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "BaseInvestmentExecution对象（新需求）", description = "项目投资执行")
public class BaseInvestmentExecutionNew extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 编码
     */
    @ApiModelProperty(value = "编码")
    private String code;

    /**
     * 填报单位
     */
    @ApiModelProperty(value = "填报单位")
    private String filingUnitId;

    /**
     * 填报月份
     */
    @ApiModelProperty(value = "填报月份", required = true)
    private String filingMonth;

    /**
     * 填报年度
     */
    @ApiModelProperty(value = "填报年度", required = true)
    private String filingYear;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long imProjectId;

    /**
     * 是否列入市委、市政府1-5号文件
     */
    @ApiModelProperty(value = "是否列入市委、市政府1-5号文件")
    private Integer isIncludeCityDoc;

    /**
     * 是否列入市政府民生实事
     */
    @ApiModelProperty(value = "是否列入市政府民生实事")
    private Integer isIncludeCityLivelihood;

    /**
     * 项目合作方
     */
    @ApiModelProperty(value = "项目合作方")
    private String projectPartner;

    /**
     * 项目负责人以及联系方式
     */
    @ApiModelProperty(value = "项目负责人以及联系方式")
    private String projectHeaderMobile;

    /**
     * 本月投资完成情况
     */
    @ApiModelProperty(value = "本月投资完成情况")
    private BigDecimal thisMonthComplete;

    /**
     * 本月累计完成情况
     */
    @ApiModelProperty(value = "本月累计完成情况")
    private BigDecimal thisMonthAccumulate;

    /**
     * 本年累计投资完成比例
     */
    @ApiModelProperty(value = "本年累计投资完成比例")
    private BigDecimal thisYearProportion;

    /**
     * 战略性新兴产业与现代服务业年度投资情况
     */
    @ApiModelProperty(value = "战略性新兴产业与现代服务业年度投资情况")
    private BigDecimal risingServiceInvestment;

    @ApiModelProperty(value = "开工时间 - yyyy-MM-dd")
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
    @JsonFormat(pattern = DateUtil.PATTERN_DATE)
    private Date projectStartTime;

    /**
     * 建设周期
     */
    @ApiModelProperty(value = "建设周期")
    private Integer constructionCycle;

    /**
     * 年度工作目标
     */
    @ApiModelProperty(value = "年度工作目标")
    private String thisYearTarget;

    /**
     * 当月进度
     */
    @ApiModelProperty(value = "当月进度")
    private String thisYearProgress;

    /**
     * 当前项目进展或项目运营情况
     */
    @ApiModelProperty(value = "当前项目进展或项目运营情况")
    private String projectProgress;

    /**********************************************************************************************/

    /**
     * 审批人
     */
    private String approvedUser;

    /**
     * 审批时间
     */
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
    @JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
    private Date approvedTime;

    /**
     * 审批意见
     */
    private String approvedOpinion;

    /**
     * 流程实例id
     */
    private String formType;

    @TableField(exist = false)
    private EffectiveInvestment effectiveInvestment;

    @TableField(exist = false)
    private List<FundProject> fundProjects;

    /**
     * 数据来源 null为系统填报 对应用户id
     */
    @ApiModelProperty(value = "数据来源 null为系统填报 对应用户id")
    private String dataSource;

    /**
     * 数据来源id
     */
    @ApiModelProperty(value = "数据来源id", required = true)
    private String dataSourceId;
}
